"""
### 多进程协作与消息队列
**题目描述**：
设计一个生产者-消费者模型，模拟多进程协作：
1. 使用消息队列（Queue）传递数据。
2. 创建两个生产者进程：
   - 生产者1：向队列中放入3个商品（如“商品A”、“商品B”、“商品C”）。
   - 生产者2：向队列中放入2个商品（如“商品D”、“商品E”）。
3. 创建两个消费者进程：
   - 消费者1：从队列中取出2个商品并打印。
   - 消费者2：从队列中取出3个商品并打印。
4. 主进程等待所有生产者和消费者完成后，打印“任务结束”。
**提示**：
- 使用`Queue`传递数据。
- 注意进程的启动和等待顺序。
"""
import time
from multiprocessing import Process,Queue
def product1(queue):
    items = ["商品A","商品B","商品C"]
    for item in items:
        queue.put(item)
        print("生成者1放入",item)
        time.sleep(1)
def product2(queue):
    items = ["商品D","商品E"]
    for item in items:
        queue.put(item)
        print("生成者2放入",item)
        time.sleep(1)
def consumer1(queue):
    for _ in range(2):
        item = queue.get()
        print(f"消费者1取出{item}")
        time.sleep(1)
def consumer2(queue):
    for _ in range(3):
        item = queue.get()
        print(f"消费者2取出{item}")
        time.sleep(1)
if __name__ == '__main__':
    queue = Queue()
    p1 = Process(target=product1,args=(queue,))
    p2 = Process(target=product2,args=(queue,))
    c1 = Process(target=consumer1,args=(queue,))
    c2 = Process(target=consumer2,args=(queue,))
    # 启动
    p1.start()
    p2.start()
    c1.start()
    c2.start()
    # 等待所有进程完成
    p1.join()
    p2.join()
    c1.join()
    c2.join()
    print("任务结束")






